#ifndef SOULLANG_SOULC_PREPROCESSOR_HPP
#define SOULLANG_SOULC_PREPROCESSOR_HPP

#include <vector>
#include <string>
#include <cstdint>
#include <memory>

#include "source.hpp"
#include "debug.hpp"
#include "codeAnalyze.hpp"

namespace soulc {
	typedef enum {
		DEFINE_INT,   // int number
		DEFINE_FLOAT, // float number
		DEFINE_STR,   // string or any statment/var/class name
	} DefineType;

	typedef struct {
		DefineType type;

		int intValue;
		double floatValue;
		std::string str;
	} Define;


	void preprocess(Source &source);
}


#endif
